Make vif cleanup use xstransact and use classmethods for setup.
authorcl349@firebug.cl.cam.ac.uk <cl349@firebug.cl.cam.ac.uk>
Fri, 9 Sep 2005 17:36:39 +0000 (17:36 +0000)
committercl349@firebug.cl.cam.ac.uk <cl349@firebug.cl.cam.ac.uk>
Fri, 9 Sep 2005 17:36:39 +0000 (17:36 +0000)
Signed-off-by: Christian Limpach <Christian.Limpach@cl.cam.ac.uk>
tools/python/xen/xend/XendDomainInfo.py

index d82490cce93015cab921c881d146a9ed7ba49d8a..5cfd6133da15b1d7c9ec0e8f0db6515635f34556 100644 (file)
@@ -457,24 +457,22 @@ class XendDomainInfo:
                                                 self.uuid, devnum)
             frontpath = "%s/device/%s/%d" % (self.path, type, devnum)
 
-            frontt = xstransact(frontpath)
-            frontt.write('backend', backpath)
-            frontt.write('backend-id', "%i" % backdom.id)
-            frontt.write('handle', "%i" % devnum)
-            frontt.write('mac', mac)
-            frontt.commit()
-
-            backt = xstransact(backpath)
-            backt.write('script', script)
-            backt.write('domain', self.name)
-            backt.write('mac', mac)
-            backt.write('bridge', bridge)
+            front = { 'backend' : backpath,
+                      'backend-id' : "%i" % backdom.id,
+                      'handle' : "%i" % devnum,
+                      'mac' : mac }
+            xstransact.Write(frontpath, front)
+
+            back = { 'script' : script,
+                     'domain' : self.name,
+                     'mac' : mac,
+                     'bridge' : bridge,
+                     'frontend' : frontpath,
+                     'frontend-id' : "%i" % self.id,
+                     'handle' : "%i" % devnum }
             if ipaddr:
-                backt.write('ip', ' '.join(ipaddr))
-            backt.write('frontend', frontpath)
-            backt.write('frontend-id', "%i" % self.id)
-            backt.write('handle', "%i" % devnum)
-            backt.commit()
+                back['ip'] = ' '.join(ipaddr)
+            xstransact.Write(backpath, back)
 
             return
         
@@ -801,6 +799,10 @@ class XendDomainInfo:
         for ctrl in self.getDeviceControllers():
             if ctrl.isDestroyed(): continue
             ctrl.destroyController(reboot=reboot)
+        t = xstransact("%s/device" % self.path)
+        for d in t.list("vif"):
+            t.remove(d)
+        t.commit()
         ddb = self.db.addChild("/device")
         for type in ddb.keys():
             if type == 'vbd':
@@ -811,11 +813,6 @@ class XendDomainInfo:
                                  devdb['node'].getData())
                     typedb[dev].delete()
                 typedb.saveDB(save=True)
-            if type == 'vif':
-                typedb = ddb.addChild(type)
-                for dev in typedb.keys():
-                    typedb[dev].delete()
-                typedb.saveDB(save=True)
             if type == 'vtpm':
                 typedb = ddb.addChild(type)
                 for dev in typedb.keys():